<?php

use think\migration\Migrator;
use think\migration\db\Column;

class CompanyIndustryMonitorNitreHour extends Migrator
{
    public function up()
    {
        $table = $this->table('company_industry_monitor_nitre_hour');

        $table
            // +----------------------------------------------------------------------
            // |  step1:时间
            // +----------------------------------------------------------------------
            //说明：从mongodb中取到 nianyueri（3），shifenmiao_1（5）(这个是第1机组数据)， shifenmiao_2（73）（这个是第2机组数据），每个机组对应每一个时间
            ->addColumn('publish_time', 'datetime', ['comment' => '发布小时时间'])

            // +----------------------------------------------------------------------
            // | step2:相关ID和名称
            // +----------------------------------------------------------------------
            // 说明：这里边是固定值，1（电力行业）
            ->addColumn('industry_id', 'integer', ['limit' => 11, 'comment' => '电力供热等ID'])

            // 说明：根据 industry_id 查询表 basic_industry 中获取名称
            ->addColumn('industry_name', 'string', ['limit' => 20, 'comment' => '电力供热等名称'])

            // 说明：从mongodb中取到 qiyeID（1） 然后查询表 basic_company 的 license_number_simple 字段获取id
            ->addColumn('company_id', 'integer', ['limit' => 11, 'comment' => '公司ID'])

            // 说明：从mongodb中取到 qiyeID（1） 查询表 basic_company 的简表 license_number_simple 字段获取name
            ->addColumn('company_name', 'string', ['limit' => 50, 'comment' => '公司名称'])

            // 说明：从mongodb中取到 paikoubianhao（2） ，然后查询表 data_from_paikoubianhao 中的字段，获取 id 字段
            ->addColumn('drain_id', 'integer', ['limit' => 11, 'comment' => '排口ID'])

            // 说明：从mongodb中取到 paikoubianhao（2） ，然后查询表 data_from_paikoubianhao 中的字段，获取 name 字段
            ->addColumn('drain_name', 'string', ['limit' => 50, 'comment' => '排口名称'])

            // 说明：从mongodb中取到
            // zhilisheshibianhao_1_a（8）,zhilisheshibianhao_1_b（24）,zhilisheshibianhao_1（40）,
            //zhilisheshibianhao_2_a（76）,zhilisheshibianhao_2_b（93）,zhilisheshibianhao_2（108）
            // 上述取到6个字段，分别是1机组的脱硝设施1，脱硝设施2，脱硫设施；2机组的脱硝设施1，脱硝设施2，脱硫设施；
            // 字段组合：(gongyileixingTX_1_a)-(jizubianhao_1)(guolubianhao_1_a)(zhilisheshibianhao_1_a) 这个组合后是：TX-1A1。正好是数据表basic_facility中的name字段
            // 然后根据这个 name 查询 id
            ->addColumn('facility_id', 'integer', ['limit' => 11, 'comment' => '工艺设施ID'])

            // 这个字段就是上边的字段组合 字段组合：(gongyileixingTX_1_a)-(jizubianhao_1)(guolubianhao_1_a)(zhilisheshibianhao_1_a)
            // 这个组合后是：TX-1A1。正好是数据表basic_facility中的name字段
            ->addColumn('facility_name', 'string', ['limit' => 50, 'comment' => '工艺设施编号'])

            // +----------------------------------------------------------------------
            // | step3:“模型计算”出来的运行参数
            // +----------------------------------------------------------------------

            // 对于脱硝来说：通过“脱硫正向反应模型”得到“出口NOx浓度”，就是“硝”的“运行浓度”（相关参数参考接口文档）
            ->addColumn('operation_concentration', 'string', ['limit' => 20, 'comment' => '硝运行浓度'])

            // 脱硝效率，公式： 1- (硝的X出口氮氧化物浓度10,26,78,94/硝的X入口氮氧化物浓度16,32,84,100),即：1-(operation_concentration/)
            ->addColumn('operating_efficiency', 'string', ['limit' => 20, 'comment' => '硝运行效率'])

            // +----------------------------------------------------------------------
            // | step4:“工况数据”中出来的前端使用字段（求和）
            // +----------------------------------------------------------------------
            // 喷氨量，对应表中的“source_company_jin_neng_re_dian2”中的18,34,86,102
            ->addColumn('nh3_flow', 'string', ['limit' => 20, 'comment' => '喷氨量'])

            // 氨逃逸指标，对应表中的“source_company_jin_neng_re_dian2”中的12，28，80，96
            ->addColumn('out_nh3', 'string', ['limit' => 20, 'comment' => '氨逃逸指标'])

            // 出口氮氧化物浓度，对应表中的“source_company_jin_neng_re_dian2”中的10,26,78,94
            ->addColumn('out_no2', 'string', ['limit' => 20, 'comment' => '出口氮氧化物浓度'])

            // 入口氮氧化物浓度，对应表中的“source_company_jin_neng_re_dian2”中的16，32，84，100
            ->addColumn('in_no2', 'string', ['limit' => 20, 'comment' => '入口氮氧化物浓度'])

            // +----------------------------------------------------------------------
            // | step5:取出来前端不用，但需要计算用（求和）
            // +----------------------------------------------------------------------
            // 硝小时出口烟气量（协议没有）- 董敬文在2019年04月25日确认过了，按“脱硫入口烟气量”表中的41，109，按“脱硝塔入口烟气量14,31/82,98各自占比”去计算
            ->addColumn('aig_flue_flow', 'float', ['comment' => '硝小时出口烟气量（协议）'])

            // +----------------------------------------------------------------------
            // | step6:硝的排放量（其他地方需要用）
            // +----------------------------------------------------------------------
            // 硝的排放量=脱硫塔入口烟气量*脱硝塔入口烟气量各自占比*脱硝塔出口NOX的浓度值
            ->addColumn('emissions', 'float', ['comment' => '硝的排放量=硝小时运行浓度（模型计算出来的） * 硝小时出口烟气量（协议）'])

            // +----------------------------------------------------------------------
            // |step7:时间
            // +----------------------------------------------------------------------
            ->addColumn('create_time', 'string', ['limit' => 50, 'comment' => '插入时间'])

            //注释
            ->setComment('工况 - 工业企业监测 - 脱硝（小时）')

            //引擎
            ->setEngine('InnoDB')
            ->save();
    }

    public function down()
    {
        $this->table('company_industry_monitor_nitre_hour')->drop();
    }
}
